%macro attrv(ds,var,attrib); %local _attrvdsid_ _attrvrc_ _attrvnum_; %let _attrvdsid_=%sysfunc(open(&ds,is)); %if &_attrvdsid_ EQ 0 %then %do; %put ERROR: (attrv) Dataset &ds not opened due to the following reason:; %put %sysfunc(sysmsg()); %end; %else %do; %let _attrvnum_=%sysfunc(varnum(&_attrvdsid_,&var)); %if &_attrvnum_ LT 1 %then %put ERROR: (attrv) Variable &var not in dataset &ds; %else %do; %sysfunc(&attrib(&_attrvdsid_,&_attrvnum_)) %end; %let _attrvrc_=%sysfunc(close(&_attrvdsid_)); %end; %mend;